//////////////////////////////////////////////////////////////////////////

#ifndef _SERVERMAPPARSER_H_
#define _SERVERMAPPARSER_H_

#ifndef _MAPPARSERBASE_H_
#include "mapparserbase.h"
#endif

#ifndef _MAPONSERVER_H_
#include "maponserver.h"
#endif

//////////////////////////////////////////////////////////////////////////

/** Parser for map description files on server side
*
*  @author   Anastasia Karpinska
*  @since    Feb 25th, 2010
*  @updated  May 03rd, 2010
*/
class ServerMapParser : public MapParserBase
{
//////////////////////////////////////////////////////////////////////////

public:

//////////////////////////////////////////////////////////////////////////


    /** Constructor */
    ServerMapParser( const char* _fileName );


    /** Destructor */
    virtual ~ServerMapParser();


    /** Returns map */
    MapOnServer& GetMap();


//////////////////////////////////////////////////////////////////////////

private:

//////////////////////////////////////////////////////////////////////////


    /** Set map size */
    virtual void SetMapSize( int _w, int _h );


    /** Parse circle */
    virtual void ParseCircle();


    /** Parse rect */
    virtual void ParseRect();


    /** Parse polygon */
    virtual void ParsePolygon();


    /** Parse wall */
    virtual void ParseWall();


    /** Parse revival points */
    virtual void ParseRevivalPoints();


    /** Parse shape position */
    Point ParsePosition();


//////////////////////////////////////////////////////////////////////////


    /** Map description */
    MapOnServer m_Map;


//////////////////////////////////////////////////////////////////////////
};


//////////////////////////////////////////////////////////////////////////

#endif

//////////////////////////////////////////////////////////////////////////
